//
//  MainViewController.m
//  UI09_3_UITableView 两个协议的方法使用
//
//  Created by Scott on 15/5/7.
//  Copyright (c) 2015年 www.lanou3g.com 蓝欧3G. All rights reserved.
//


#import "MainViewController.h"
#import "HeadView_1.h"

@interface MainViewController () <UITableViewDataSource, UITableViewDelegate>

@property (nonatomic, retain) NSMutableArray *arr;

@end

@implementation MainViewController

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.arr = [NSMutableArray arrayWithObjects:@"北京", @"天津", @"河北", @"河南", @"山东", @"黑龙江", @"吉林", @"辽宁", nil];
        
    }
    return self;
}

- (void)dealloc
{
    [_arr release];
    [super dealloc];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    self.view.backgroundColor = [UIColor whiteColor];
    self.title = @"系统";
    
    UITableView *tableView = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bounds style:UITableViewStylePlain];
    
    [self.view addSubview:tableView];
    [tableView release];
    
    /* 指定代理人 */
    tableView.dataSource = self;
    tableView.delegate = self;
    
    
    /* 刷新数据, 重新加载协议方法 */
    [tableView reloadData];
    
}

#pragma mark - 知识点1 UITableViewDataSource 协议常用方法
#pragma mark ** 必须实现的两个方法
/* tableview显示的行数 */
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.arr.count;
}


/* 设置tableView 每行的cell */
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    /**
     * cell 使用重用池机制
     */
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reuse"];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"resue"] autorelease];
    }
    
    cell.textLabel.text = [self.arr objectAtIndex:indexPath.row];
    cell.detailTextLabel.text = @"副标题";
    cell.imageView.image = [UIImage imageNamed:@"1.jpg"];
    
    return cell;
}

#pragma mark ** 其它方法

/* tableView 分区数 */
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

    return 3;
}


/* tableView 设置分区顶部标题 */
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    
    return [NSString stringWithFormat:@"第%c区", (int)(section + 65)];
}


/* tableView 设置底部标题 */
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
    return [NSString stringWithFormat:@"第%ld区的底部", section];
}

/* tableView 设置头部View */
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{

    HeadView_1 *view1 = [[HeadView_1 alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 100)];
    view1.myImage = @"2.jpg";
    return view1;
    
    
}



/* 设置分区索引 */
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{

    NSMutableArray *arr = [NSMutableArray array];
    for (int i = 65; i < 65 + 26; i++) {
        NSString *str = [NSString stringWithFormat:@"%c", i];
        [arr addObject:str];
    }
    
    return arr;
}



#pragma mark - 知识点2 UITableViewDelegate 协议, 常用的方法
/* 当前选中哪一行 */
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"当前行数:%ld", indexPath.row);
    NSLog(@"%@", [self.arr objectAtIndex:indexPath.row]);
}


/* 设置分区头部的高度 */
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 30;
}


/* 设置每一行的高度 */
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

    /* 第一个分区高度为 80 
     * 其它分区高度为 50
     */
    switch (indexPath.section) {
        case 0:
            return 80;
            break;
            
        default:
            return 50;
            break;
    }
    
}



- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end
